package br.com.jspl.app.ui;
import java.awt.*;
import java.awt.event.MouseEvent;

import javax.swing.*;

import br.com.jspl.app.devices.Componente;
import br.com.jspl.app.devices.ProtoBoard;

public class PonteiroMouse extends JLabel{
	/**
	 * 
	 */
	private static final long serialVersionUID = 4962222226146929158L;
	private Image imgPonteiro;
	private int x,y,deslocamento;
	private Cursor CursorVazio,CursorAtual;
	/**
	 * O Ativo dessa classe se refere se o ponteiro do mouse ser
	 * desenhado na mo, ou se o componente utiliza um cursor padro e portanto
	 *  um componente de seleo, ou algo parecido
	 */
	private boolean ativo;
	//private boolean ativo;
	private Toolkit tk;
	private Componente componenteSelecionado;
	public PonteiroMouse()
	{
		criaCursorVazio();
	}
	public Image getImgPonteiro() {
		return imgPonteiro;
	}
	public void AtivaPonteiro(Componente CompAtual) {
		if (CompAtual.isCusorpadrao())           	
		{
			CursorAtual = CompAtual.getCursorpadrao();		               
			ativo= false;			
		}
    	else
    	{    	
			imgPonteiro = CompAtual.getImagem();		               
			this.setIcon(new ImageIcon(imgPonteiro));
	        setSize(imgPonteiro.getWidth(null), imgPonteiro.getHeight(null));
	        ativo= true;
    	}
		componenteSelecionado = CompAtual.NovoComp();
		if (componenteSelecionado == null)
			componenteSelecionado = CompAtual;
 
	}
	public void AtivaPonteiro(Cursor c) {
		CursorAtual = c;		               
		ativo= false;          
 
	}
	/*public void setImgPonteiro(Image imgP) {
		imgPonteiro = imgP;		               
		this.setIcon(new ImageIcon(imgPonteiro));
                setSize(imgPonteiro.getWidth(null), imgPonteiro.getHeight(null));
 
	}*/
	public void atualizaPosicao(Point p,MouseEvent e)
	{
		calculaPosicao(p,e);
		repaint();
	}
	
	private void calculaPosicao(Point p,MouseEvent e)
	{
		//Point w = getRootPane().getLocation();
		/*x = p.x* deslocamento;// - w.x ;
		y = p.y* deslocamento;// - w.y ;// + deslocamento;*/
		x = e.getX();
		y = e.getY();
		//SimuladorInterface.DESLOCAMENTO
		setLocation(x,y);
	}
	
	public int getDeslocamento() {
		return deslocamento;
	}
	
	public void setDeslocamento(int deslocamento) {
		this.deslocamento = deslocamento;
	}
	public void ativa(ProtoBoard board)
	{
		board.setCursor(CursorVazio);
	}
	private void criaCursorVazio()
	{
		Image img;
		tk = Toolkit.getDefaultToolkit();
		img = tk.getImage("nada.png");
		CursorVazio = tk.createCustomCursor(img, new Point(0, 0), "cursorvazio");
	}
	public boolean isAtivo() {
		return ativo;
	}
	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}
	public Cursor getCursorVazio() {
		return CursorVazio;
	}
	public Cursor getCursorAtual() {
		return CursorAtual;
	}
	public Componente getComponenteSelecionado() {
		return componenteSelecionado;
	}
}
